【Oracle】一个SQL语法分析 您所在的位置:网站首页 oracle sql语法分析提取参数 【Oracle】一个SQL语法分析

【Oracle】一个SQL语法分析

2023-06-28 12:22| 来源: 网络整理| 查看: 265

一、源代码: SELECT a.datatime, count(1) FROM ( SELECT TO_CHAR(d.datatime, 'yyyy-mm-dd hh24:mi') AS datatime FROM DATA d WHERE 1 = 1 AND d.DATATIME > TO_DATE('2017-08-02', 'yyyy-mm-dd') AND d.DATATIME < TO_DATE('2017-08-02 23:59', 'yyyy-mm-dd hh24:mi') ) a GROUP BY a.datatime ORDER BY a.datatime; 二、解析:

①count(1)表示只统计查询表里的第一列;第一是方便,第二是快,只扫描第一列。如果用count(※)则会扫描所有列;第三点事:如果下面有null,count(1)则不计入统计这一项结果;但是如果是count(*)则会统计;(这里的※就是后面的星号,MarkDown两个星号会变斜体) ②TO_CHAR是把日期或者数字变成字符串,不能指定字符串长度; 使用TO_CHAR处理日期的格式为: TO_CHAR(number,‘格式format’),例如,上面的例子中用到的:

TO_CHAR(d.datatime, 'yyyy-mm-dd hh24:mi')

③WHERE 1 = 1是全真条件,为了让后面的AND都能顺利执行,如果不是1=1这样的全真条件,AND就会直接跟到WHERE后面去,就会报错; 把number类型的时间变成格式化的CHAR; ④TO_DATE是把CHAR类型的时间,便是DATE类型;

TO_CHAR(d.datatime, 'yyyy-mm-dd hh24:mi') 这里的月份是mm,Mysql中是MM,注意区别;这里需要注意的是,hh24表示24小时制;而Mysql中hh表示12小时制,HH表示24小时制;这里的分钟,也不是Mysql中的mm,而是mi;

⑤这里的习惯是datatime小写的时间是CHAR格式的,DATATIME是时间格式的时间; ⑥GROUP BY a.datatime 表示分组,按照时间分组 ⑦ORDER BY a.datatime; 表示排序,按照时间来排序; ⑧最重要的一点是:这里是嵌套语句,一个里面套另一个;分开来看就行;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有